package cn.tedu.product.controller;

import com.jt.common.pojo.Product;
import com.jt.common.vo.EasyUIResult;
import cn.tedu.product.service.ProductService;
import com.jt.common.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/product/manage")
public class ProductController {
    @Autowired
    ProductService ps;

    @RequestMapping("pageManage")
    public EasyUIResult queryProductByPage(Integer page, Integer rows) {
        return ps.queryProductByPage(page, rows);
    }

    @RequestMapping("/item/{productId}")
    public Product queryOneProduct(@PathVariable String productId) {
        return ps.queryOneProduct(productId);
    }

    /**
     * 商品数据新增
     * @param product
     * @return
     */
    @RequestMapping("/save")
    public SysResult saveProduct(Product product) {
        // SysResult:
        // status: Integer 表示状态数字, 200成功，201失败，202其他，203...
        // msg: String 表示与前端交互的文字，明确的传递信息。200 msg: 太棒了，这次操作完成的不错
        // data: Object 当ajax请求时查询，可以将查询结果封装到data中，伴随着status，msg将交互结构完整的返回
        // 这个SysResult对象的结构，标准的与ajax对话的结构，基本上任何场景都可以使用这个结构
        try {
            ps.saveProduct(product);
            // 返回一个表示操作正常的SysResult status
            return SysResult.ok();// status=200 msg=ok data=null;
        } catch (Exception e) {
            // 进入异常表示新增失败
            e.printStackTrace();
            return SysResult.build(201, e.getMessage(), null);
        }
    }

    /**
     * 修改商品
     * @param product
     * @return
     */
    @RequestMapping("/update")
    public SysResult updateProduct(Product product) {
        try {
            ps.updateProduct(product);
            // 返回一个表示操作正常的SysResult status
            return SysResult.ok();// status=200 msg=ok data=null;
        } catch (Exception e) {
            // 进入异常表示修改失败
            e.printStackTrace();
            return SysResult.build(201, e.getMessage(), null);
        }
    }

    @RequestMapping("/queryAllProduct")
    public List<Product> queryAllProduct() {
        return ps.queryAllProduct();
    }
}
